package com.ztom.beans.factory.support.reader

import com.ztom.beans.factory.support.registry.BeanDefinitionRegistry
import com.ztom.core.io.Resource
import com.ztom.core.io.ResourceLoader

/**
 * 从 resource 加载 bean definition 信息
 * 并注册到 bean definition 注册表
 *
 * @author ZhangTao
 */
interface BeanDefinitionReader {

    /**
     * 获取 bean definition 注册表
     */
    fun getRegistry(): BeanDefinitionRegistry

    /**
     * 获取资源加载器
     */
    fun getResourceLoader(): ResourceLoader

    /**
     * 从 resource 加载
     */
    fun loadBeanDefinitions(resource: Resource)

    /**
     * 从指定路径加载
     */
    fun loadBeanDefinitions(location: String)

    /**
     * 从指定的多个路径加载
     */
    fun loadBeanDefinitions(locations: Array<String>)
}